home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-ppc-src / ar / archive.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  2KB  |  72 lines

  1. /* $VER: ar archive.h V0.1 (31.01.98)
  2.  *
  3.  * This file is part of ar, a portable archive maintanance
  4.  * utility for normal and BSD-style archives.
  5.  * Copyright (c) 1999  Frank Wille
  6.  *
  7.  * ar is freeware and part of the portable and retargetable ANSI C
  8.  * compiler vbcc, copyright (c) 1995-99 by Volker Barthelmann.
  9.  * ar may be freely redistributed as long as no modifications are
  10.  * made and nothing is charged for it. Non-commercial usage is allowed
  11.  * without any restrictions.
  12.  * EVERY PRODUCT OR PROGRAM DERIVED DIRECTLY FROM MY SOURCE MAY NOT BE
  13.  * SOLD COMMERCIALLY WITHOUT PERMISSION FROM THE AUTHOR.
  14.  *
  15.  *
  16.  * v0.1  (31.01.99) phx
  17.  *       First working version, which only supports 'q' (quick append)
  18.  *       and 't' (table of contents), reads and writes normals and
  19.  *       BSD-style archives. Symbol table will not be created!
  20.  * v0.0  (29.01.99) phx
  21.  *       File created.
  22.  */
  23.  
  24. #include <time.h>
  25. #include "lists.h"
  26.  
  27.  
  28. #define ARMAG     "!<arch>\n"   /* ar "magic id" */
  29. #define SARMAG    8             /* strlen(ARMAG) */
  30. #define AR_EFMT1  "#1/"         /* extended format #1, long names (BSD-ar) */ 
  31. #define ARFMAG    "`\n"
  32. #define MAXARNAME 255           /* max. size for file names */
  33.  
  34. struct ArHeader {
  35.   char ar_name[16];             /* name */
  36.   char ar_time[12];             /* modification time */
  37.   char ar_uid[6];               /* user id */
  38.   char ar_gid[6];               /* group id */
  39.   char ar_mode[8];              /* octal file permissions */
  40.   char ar_size[10];             /* size in bytes */
  41.   char ar_fmag[2];              /* consistency check */
  42. };
  43.  
  44.  
  45. struct ArObject {
  46.   struct node n;
  47.   char *name;
  48.   uint8 *data;
  49.   uint32 size;
  50.   time_t time;
  51.   uint16 uid;
  52.   uint16 gid;
  53.   uint16 mode;
  54. };
  55.  
  56.  
  57. struct Archive {
  58.   struct list l;
  59.   char *name;
  60.   uint32 entries;
  61.   struct ArObject *symbol_tab;
  62.   struct ArObject *long_names;
  63. };
  64.  
  65.  
  66. /* functions */
  67. extern struct Archive *ar_create(char *);
  68. extern struct Archive *ar_read(char *);
  69. extern struct Archive *ar_readorcreate(char *,uint32);
  70. extern struct ArObject *ar_newmemb(char *);
  71. extern void ar_write(struct Archive *,uint32);
  72.